<?php
/**
 * Esta classe implementa o Helper de view
 * da tag label do html 
 *
 * @category    Fencer
 * @package     Fencer_View
 * @subpackage  Fencer_View_Helper
 * @copyright   Copyright (c) 2012 FencerWeb
 * @version     $Id: 
 */
require_once 'Zend/View/Helper/Abstract.php';
class Fencer_View_Helper_FLabel extends Fencer_View_Helper_FencerHtmlElements {
	
	/**
	 * Método inicializador da classe. Deve ser chamado na view
	 * @param array $adicionaConfig
	 * @param array $removeConfig
	 * @return Object $helper
	 */
	public function fLabel( $adicionaConfig = array(), $removeConfig = array()  ) {
		//Cria uma instância da classe
		$label = new Fencer_View_Helper_FLabel();
		
		//inicializa os elementos que foram definidos como padrão
		$adicionaConfig = $label->_setElementosIniciaisTagLabel($adicionaConfig);
		//Remove as configurações
		$label->setRemoveConfig($removeConfig);
		//Seta as configurações adicionais
		$label->setAdicionaConfig($adicionaConfig);
		//Verifica elementos obrigatórios
		$label->_verificaElementosObrigLabel($adicionaConfig);
		
		$atributos = implode(' ', $label->getAtributo());
		$texto     = $label->getTexto();
			
		$retorno = "";
		$retorno = "<label {$atributos} >{$texto}</label>" . PHP_EOL;
			
		return $retorno;
				
		//Seta a view
// 		$helper = $this->setView ( $this->view );
	
// 		return $helper;
	}
	
	/**
	 * Método que printa o retorno da span na view
	 * @return String $retorno
	 */
// 	public function __toString(){
// 		try{
			
// 			$atributos = implode(' ', $this->getAtributo());
// 			$texto     = $this->getTexto();
			
// 			$retorno = "";
// 			$retorno = "<label {$atributos} >{$texto}</label>" . PHP_EOL;
			
// 			return $retorno;
		
// 		}catch ( Zend_Exception $e){
// 			echo $e->getMessage();
// 		}
	
// 	}
	
	
	/**
	 * Método que inicializa a tag com os elementos iniciais que serão
	 * configurados neste métodos
	 * @param array $adicionaConfig
	 * @return array $adicionaConfig
	 */
	private function _setElementosIniciaisTagLabel($adicionaConfig){
// 			if(array_key_exists(Fencer_View_Helper_FencerHtmlElements::F_HTML_ATTR_STYLE, $adicionaConfig)){
// 				$adicionaConfig[Fencer_View_Helper_FencerHtmlElements::F_HTML_ATTR_STYLE][] = 'width:auto';
// 			}else{
// 				$adicionaConfig[Fencer_View_Helper_FencerHtmlElements::F_HTML_ATTR_STYLE] = array('width:auto');
// 			}
	
		return $adicionaConfig;
	}
		
	/**
	 * Verifica os elemtos obrigatórios da tag label
	 * @param array $adicionaConfig
	 * @return void
	 */
	private function _verificaElementosObrigLabel($adicionaConfig){
		$for = $this->getFor();
		
		//quando não é informado
		if(empty($for) || is_null($for)){
			$this->_erroFor();
		}
		
		if(key_exists('texto', $adicionaConfig)){
			if(empty($adicionaConfig['texto']) || is_null($adicionaConfig['texto'])){
				$msg = "O parâmetro <strong>texto</strong> foi informado porém seu valor não foi definido.<br />
				        <strong>Exemplo: array('texto'=>'Nome Completo:')";
				$this->erroExigeValor($msg);
			}
		}else{
			$msg = "O parâmetro <strong>texto</strong> é obrigatório.<br />
			<strong>Exemplo: array('texto'=>'Nome Completo:')";
			$this->erroExigeValor($msg);
		}
		
	}
	
	/**
	 *
	 * Gera a tela de erro para o atributo For
	 * @param String $typeIncorreto
	 * @param boolean $naoInformado
	 * @return void
	 */
	private function _erroFor(){
		$css = $this->getCssTelasDeErro();
	
		$erroLegend  = "Erro - Atributo For não foi informado.";
		$erroSpan    = "O atributo <strong>for</strong> é um atributo obrigatório e não foi informado.";
	
		$retorno   = "";
		$retorno  .= "<fieldset class=\"fieldset-erro-type-input\" style=\"{$css['fieldset']}\">";
		$retorno  .= "<legend id=\"conteudo-nome\" style=\"{$css['legend']}\">{$erroLegend}</legend>";
		$retorno  .= "<div>";
	
		$retorno .= "<span style=\"white-space: nowrap;\">{$erroSpan}";
	
		$retorno .= "</div>";
		$retorno .= "</fieldset>";
	
		echo $retorno;
		die();
	
	
	}	
	
}